﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using KPWeb.Class;
using KPWeb.Data;
using KPWeb.Function;

namespace KPWeb.Urlopy
{
    public partial class PlanyUrlopow : KPPage
    {
        private void komunikatError(int kod)//, int iT, int iID)
        {
            fError.Visible = true;
            switch (kod)
            {
                case -1: Error1.Visible = true;
                    break;
                case -2: Error2.Visible = true;
                    break;
                case -3: Error3.Visible = true;
                    break;
                case -4: Error4.Visible = true;
                    break;
                case -5: Error5.Visible = true;
                    break;
            
                default: fError.Visible = false;
                    break;
            }
        }
        private short RokPlany
        {
            get
            {
                if (ViewState["RokPlany"] == null) ViewState["RokPlany"] = DateTime.Now.Year;
                return short.Parse(ViewState["RokPlany"].ToString());
            }
            set
            {
                ViewState["RokPlany"] = value;

            }
        }
        private int OsobaIDPlany
        {
            get
            {
                if (ViewState["OsobaIDPlany"] == null) ViewState["OsobaIDPlany"] = 0;
                         return int.Parse(ViewState["OsobaIDPlany"].ToString());
            }
            set
            {
                ViewState["OsobaIDPlany"] = value;

            }
        }
        private int OsobaJednostkaIDPlany
        {
            get
            {
                if (ViewState["OsobaJednostkaIDPlany"] == null) ViewState["OsobaJednostkaIDPlany"] = 0;
                return int.Parse(ViewState["OsobaJednostkaIDPlany"].ToString());
            }
            set
            {
                ViewState["OsobaJednostkaIDPlany"] = value;

            }
        }
        private bool bEdycja
        {
            get
            {
                if (ViewState["bEdycja"] == null) ViewState["bEdycja"] = false;
                return bool.Parse(ViewState["bEdycja"].ToString());
            }
            set
            {
                ViewState["bEdycja"] = value;

            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
         //   bEdycja = true;
            int iTemp = 0;
            Error1.Visible = false;
            Error2.Visible = false;
            Error3.Visible = false;
            Error4.Visible = false;
            Error5.Visible = false;

            fError.Visible = false;
          
            if (!this.IsPostBack)
            {
                RokPlany = short.Parse(Request["value"]);
                RokPlany += short.Parse(DateTime.Now.Year.ToString());

                Rok.Text = RokPlany.ToString();
               
                //OsobaIDPlany=( Request["osobaIDPlany"]=="0" ? int.Parse(Current.OsobaID)  :int.Parse(Request["osobaIDPlany"]));
                //OsobaJednostkaIDPlany = (Request["OsobaJednostkaIDPlany"] == "0" ?
                //    int.Parse(Current.OsobaID) : int.Parse(Request["OsobaJednostkaIDPlany"]));
            
                OsobaIDPlany =  int.Parse(Current.OsobaID);
                OsobaJednostkaIDPlany =  int.Parse(Current.JednostkaID);
              
                Osoby osoba1 = new Osoby();
                vKP_Osoby tempOsoba = osoba1.GetDaneOsoby(OsobaJednostkaIDPlany, OsobaIDPlany);
                this.Nazwisko.Text = FunctionGlobal.UppercaseFirstWords(tempOsoba.Nazwisko.ToString()+ " " + tempOsoba.Imie.ToString());

                this.CalendarUC1.AllowHolidaysChecking = false;
                this.CalendarUC1.DateStart = new DateTime(RokPlany,1,1); 

                List<DateTime> l = new List<DateTime>();
                foreach (var item in Kalendarz.GetSwieta(RokPlany))
                {
                    l.Add(new DateTime(item.year, item.month, item.day));
                }
                this.CalendarUC1.Holidays = l.ToArray();
        
               // List<DateTime> l = new List<DateTime>();
                l.Clear();
                tZalegly.Text = UrlopyK.GetUrlopyZalegly(OsobaIDPlany, RokPlany).ToString();
                tNalezny.Text = UrlopyK.GetUrlopyNalezny(OsobaIDPlany, RokPlany).ToString();
                if (int.Parse(tZalegly.Text) < 0 || int.Parse(tNalezny.Text) < 0)
                {
                    this.fError.Visible = true;
                    if (RokPlany > DateTime.Now.Year)
                    {
                        komunikatError(-5);
                        return;
                    }
                    else
                    {
                        komunikatError(-2);
                        return;
                    }
               //     this.fKalendarz.Visible = false;
                }
                else
                {
                    tRazem.Text = (int.Parse(tZalegly.Text) + int.Parse(tNalezny.Text)).ToString();
                    bEdycja = true;
                    foreach (KP_PlanyUrlopow item in Model.GetPlanowaneUrlopy(OsobaIDPlany, RokPlany))
                    {
                        //  l.Add(new DateTime(item.year, item.month, item.day));
                        l.Add(item.Date);
                        iTemp += 1;
                        if (item.Stan == 0) bEdycja = true;
                             else bEdycja = false;
                    }
          
                    this.bOdswiez.Enabled = bEdycja;
                    this.bWyczysc.Enabled = bEdycja;
                    this.bZapisz.Enabled = bEdycja;
                    this.bPrzeslij.Enabled = bEdycja;

                    this.CalendarUC1.IsDisabled = ! bEdycja;
                    this.CalendarUC1.Selected = l.ToArray();
                    tZaplanowano.Text = iTemp.ToString();
                    tDoZaplanowania.Text = (int.Parse(tZalegly.Text) + int.Parse(tNalezny.Text) - iTemp).ToString();



                }
            }
            else
            {
                this.CalendarUC1.RenderCalendar();
            }

        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            List<DateTime> l = new List<DateTime>();

            foreach (KP_PlanyUrlopow item in Model.GetPlanowaneUrlopy(OsobaIDPlany, RokPlany))
            {
                //  l.Add(new DateTime(item.year, item.month, item.day));
                l.Add(item.Date);

            }
            this.CalendarUC1.Selected = l.ToArray();

        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            //if (Model.DeletePlanyUrlopow(OsobaIDPlany, 2013) != 0)
            //   {
            //       this.Label11.Text = "Nie skasowano wszystkich pól";
            //   }
            CalendarUC1.ClearSelected();
            this.CalendarUC1.RenderCalendar();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
          //  this.Label11.Text = "";
            bool btemp = false;
            if (NieobecnosciUrlopy.DeletePlanyUrlopow(OsobaIDPlany, RokPlany) != 0)
            {
                btemp = true;
            }
            else
                foreach (DateTime d in this.CalendarUC1.Selected)
                {
                    if (NieobecnosciUrlopy.InsertPlanyUrlopow(OsobaIDPlany, d, RokPlany, 0) != 0)
                    {
                       // this.Label11.Text += d.ToShortDateString() + "<br/>";
                        btemp = true;
                    }

                }
            if (btemp)
            {
                komunikatError(-3);
                return;
            }
        }

   protected void bPrzeslij_Click(object sender, EventArgs e)
        {
            bool btemp = false;
            if (NieobecnosciUrlopy.DeletePlanyUrlopow(OsobaIDPlany, RokPlany) != 0)
            {
                btemp = true;
            }
            else
                foreach (DateTime d in this.CalendarUC1.Selected)
                {
                    if (NieobecnosciUrlopy.InsertPlanyUrlopow(OsobaIDPlany, d, RokPlany, 1) != 0)
                    {
                      btemp = true;
                    }

                }
            if (btemp)
            {
                komunikatError(-3);
                return;
            }
            else
            {

                string[] st = new string[2] { "", "" };
                st = Kalendarz.ZamienDniNaOkresy(CalendarUC1.Selected, RokPlany);

                btemp = false;
                if (NieobecnosciUrlopy.DeletePlanyUrlopowOkresy(OsobaIDPlany, RokPlany) != 0)
                {
                    btemp = true;
                }
                else
                    //(int osobaID, string okresNazwa, short liczbaDni, short year)
                    if (NieobecnosciUrlopy.InsertPlanyUrlopowOkresy(OsobaIDPlany, st[0], short.Parse(st[1]), RokPlany) != 0)
                        {
                            btemp = true;
                        }

             
                if (btemp)
                {
                    komunikatError(-4);
                    return;
                }

                Server.Transfer("~/Urlopy/PlanyUrlopow.aspx");
            }

          }
   protected void bP_Click(object sender, EventArgs e)
   {
       string[] st=new string[2] {"",""};
       st=Kalendarz.ZamienDniNaOkresy(CalendarUC1.Selected, RokPlany);
    
   }

   protected void CalendarUC1_UserControlRefreshedE(object sender, EventArgs e)
   {
       //tutaj odswiez u siebie dni
       int iTemp = this.CalendarUC1.Selected.Count();


       tZaplanowano.Text = iTemp.ToString();
       if(iTemp!=0)
             tDoZaplanowania.Text = (int.Parse(tZalegly.Text) + int.Parse(tNalezny.Text) - iTemp).ToString();
       else  tDoZaplanowania.Text="0";
       if (int.Parse(tDoZaplanowania.Text) < 0)
       {
           komunikatError(-1);
           return;
       }
       //if (int.Parse(tDoZaplanowania.Text) ==0)
       //{
       //    this.fError.Visible = true;
       //    Osoby osoba = new Osoby();
       //    vKP_Osoby tempOsoba = osoba.GetDaneOsoby(OsobaJednostkaIDPlany, OsobaIDPlany);
         
       //    Error7.Text = " "+tempOsoba.Nazwisko.ToString() + " " + tempOsoba.Imie.ToString();
       //    Error7.Visible = true;
       //}
   }

    }
}